SQL pour Oracle by Christian Soutou
Auteur:Christian Soutou [Soutou, Christian]
La langue: fra
Format: epub
Tags: Informatique
Éditeur: O'Reilly
Publié: 2008-02-01T14:00:02+00:00
BEGIN
SELECT * INTO rty_pilote
Chargement de l’enregistrement rty_pilote
FROM Pilote WHERE brevet='PL-1';
à partir d’une ligne de la table Pilote.
Accès à des valeurs de l’enregistrement par la
v_brevet := rty_pilote.brevet;
notation pointée.
…
rty_pilote.brevet := 'PL-9';
rty_pilote.nom := 'Pierre Bazex';
…
INSERT INTO Pilote VALUES rty_pilote; Insertion dans la table Pilote à partir d’un enregistrement.
262
© Éditions Eyrolles
SOUTOU Livre Page 263 Vendredi, 25. janvier 2008 1:08 13
chapitre n° 6
Bases du PL/SQL
Les colonnes récupérées par la directive %ROWTYPE n’héritent pas des contraintes NOT NULL
qui seraient éventuellement déclarées au niveau de la table.
Variables RECORD
Alors que la directive %ROWTYPE permet de déclarer une structure composée de colonnes de tables, elle ne convient pas à des structures de données personnalisées. Le type de données RECORD (disponible depuis la version 7) définit vos propres structures de données (l’équivalent du struct en C). Depuis la version 8, les types RECORD peuvent inclure des LOB
(BLOB, CLOB et BFILE) ou des extensions objets (REF, TABLE ou VARRAY).
La syntaxe générale pour déclarer un RECORD est la suivante :
TYPE nomRecord IS RECORD
( nomChamp typeDonnées [[NOT NULL] {:= | DEFAULT} expression]
[, nomChamp typeDonnées… ]… );
L’exemple suivant décrit l’utilisation d’un record :
Tableau 6-8 Manipulation de RECORD
Code PL/SQL
Commentaires
Web
DECLARE
Déclaration du RECORD contenant quatre
TYPE avionAirbus_rec IS RECORD
champs ; initialisation du champ usine par
(nserie CHAR(10), nomAvion CHAR(20),
défaut.
usine CHAR(10) := 'Blagnac',
nbHVol NUMBER(7,2));
r_unA320 avionAirbus_rec ;
r_FGLFS avionAirbus_rec ;
Déclaration de deux variables de type RECORD.
BEGIN
r_unA320.nserie := 'A1';
Initialisation des champs d’un RECORD.
r_unA320.nomAvion := 'A320-200';
r_unA320.nbHVol := 2500.60;
Affectation d’un RECORD.
r_FGLFS := r_unA320;
…
Les types RECORD ne peuvent pas être stockés dans une table. En revanche, il est possible qu’un champ d’un RECORD soit lui-même un RECORD, ou soit déclaré avec les directives %TYPE ou
%ROWTYPE. L’exemple suivant illustre le RECORD r_vols déclaré avec ces trois possibilités : DECLARE
TYPE avionAirbus_rec IS RECORD
(nserie CHAR(10), nomAvion CHAR(20),
usine CHAR(10) := 'Blagnac', nbHVol NUMBER(7,2));
© Éditions Eyrolles
263
SOUTOU Livre Page 264 Vendredi, 25. janvier 2008 1:08 13
Partie II
PL/SQL
TYPE vols_rec IS RECORD
(r_aéronef avionAirbus_rec , dateVol DATE,
rty_coPilote Pilote%ROWTYPE, affretéPar Compagnie.comp%TYPE);
Les RECORD ne peuvent pas être comparés (nullité, égalité et inégalité), ainsi les tests suivants sont incorrects :
v1 avionAirbus_rec;
v2 vols_rec;
v3 vols_rec;
BEGIN
…
IF v1 IS NULL THEN …
IF v2 > v3 THEN …
Variables tableaux (type TABLE)
Les variables de type TABLE ( associative arrays) permettent de définir et de manipuler des tableaux dynamiques (car définis sans dimension initiale). Un tableau est composé d’une clé primaire (de type BINARY_INTEGER) et d’une colonne (de type scalaire, TYPE, ROWTYPE ou
RECORD) pour stocker chaque élément.
Syntaxe
La syntaxe générale pour déclarer un type de tableau et une variable tableau est la suivante : TYPE nomTypeTableau IS TABLE OF
{ typeScalaire | variable%TYPE | table. colonne%TYPE} [NOT NULL]
| table.%ROWTYPE
[INDEX BY BINARY_INTEGER];
nomTableau nomTypeTableau;
L’option INDEX BY BINARY_INTEGER est facultative depuis la version 8 de PL/SQL. Si elle est omise, le type déclaré est considéré comme une nested table (extension objet). Si elle est pré-
sente, l’indexation ne commence pas nécessairement à 1 et peut être même négative (l’intervalle de valeurs du type BINARY_INTEGER va de – 2 147 483 647 à 2 147 483 647).
L’exemple suivant décrit la déclaration de trois tableaux et l’affectation de valeurs à différents indices (– 1, – 2 et 7800). L’accès à des champs d’éléments complexes se fait à l’aide de la notation pointée (voir la dernière instruction).
Télécharger
Ce site ne stocke aucun fichier sur son serveur. Nous ne faisons qu'indexer et lier au contenu fourni par d'autres sites. Veuillez contacter les fournisseurs de contenu pour supprimer le contenu des droits d'auteur, le cas échéant, et nous envoyer un courrier électronique. Nous supprimerons immédiatement les liens ou contenus pertinents.
180 by Unknown(1131)
Sécurité PHP 5 et MySQL by Damien Seguy & Philippe Gamache(1031)
La 132 by Unknown(995)
2020-03-09 01:08:29.048240 by Unknown(983)
UML 2 pour les bases de données by Soutou(957)
169 by Unknown(954)
PHP et MySQL pour les Nuls grand format, 6e édition (French Edition) by Janet VALADE(933)
i 59b2958329442585 by Miguel(836)
SQL pour Oracle by Christian Soutou(835)
Programmer avec MySQL by Soutou Christian(793)
clara by Inconnu(e)(786)
USA 1 by Collectif(755)
Les bases du hacking by Engebretson Patrick(752)
Algorithmes : la bombe à retardement by O'Neil Cathy(719)
Le Guide Complet - Access 2010 by Mosaique(688)
AZ-900: Préparation complète: Apprenez les principes fondamentaux d'Azure et obtenez la certification avec ce test pratique complet (French Edition) by education G(640)
PHP & MySQL Pearson by Luke Welling(638)